package com.vhall.component.entity.lottery.vo;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.vhall.component.framework.common.annotation.ParamName;
import lombok.Data;

import javax.validation.constraints.*;

/**
 * 发起抽奖 请求vo 兼容组件V1
 *
 * @author zhangtao
 */
@Data
public class LotteryCountReqVO {


    /**
     * 房间编号
     */
    @ParamName("room_id")
    @JsonProperty("room_id")
    @NotBlank(message = "房间ID不能为空")
    private String roomId;

    /**
     * 参与抽奖人员范围：
     * 1 全体参会用户
     * 2 参与问卷的参会者
     * 3 参与签到的参会者
     * 4.全体观众
     * 5.已登录观众
     * 6.参与问卷的观众
     * 7.参与签到的观众
     * 8.口令参与
     * 9.分享参与
     * 10.邀请人数参与
     * 11.下单成功的观众
     * 15.参与投票的观众
     */
    @ParamName("lottery_type")
    @JsonProperty("lottery_type")
    @Max(value = 7, message = "抽奖人员范围参数错误")
    @Min(value = 1, message = "抽奖人员范围参数错误(1-7)")
    @Positive(message = "抽奖人员范围参数错误(1-7)")
//    @NotNull(message = "lottery_type参数异常")
    private Integer lotteryType;

    /**
     * 1-排除已中奖用户 0-不排除已中奖用户
     */
    @ParamName("winner_out")
    @JsonProperty("winner_out")
    @Max(value = 1, message = "winnerOut是否排除已中奖用户参数错误,0|1")
    @Min(value = 0, message = "winnerOut是否排除已中奖用户参数错误,0|1")
    @PositiveOrZero(message = "winnerOut是否排除已中奖用户参数错误,0|1")
//    @NotNull(message = "winner_out参数异常")
    private Integer winnerOut;


    /**
     * 中奖用户ID，多中奖用户ID用逗号分割
     */
    @ParamName("lottery_user_ids")
    @JsonProperty("lottery_user_ids")
    private String lotteryUserIds;


    /**
     * 抽奖规则
     * 1 抽奖规则--指定列表随机
     * 2 抽奖规则--自定义上传用户列表
     */
    @ParamName("lottery_rule")
    @JsonProperty("lottery_rule")
    @Max(value = 2, message = "抽奖规则参数错误,1|2")
    @Min(value = 1, message = "抽奖规则参数错误,1|2")
    @Positive(message = "抽奖规则参数错误,1|2")
//    @NotNull(message = "lottery_rule参数异常")
    private Integer lotteryRule;

    /**
     * 抽奖标题
     */
    @ParamName("lottery_rule_text")
    @JsonProperty("lottery_rule_text")
    private String lotteryRuleText;

}
